.\" -*- nroff -*-
.\" Copyright (c) 2015      University of Houston.  All rights reserved.
.\" Copyright (c) 2015      Mellanox Technologies, Inc.
.\" $COPYRIGHT$
.de Vb
.ft CW
.nf
..
.de Ve
.ft R

.fi
..
.TH "SHMEM\\_ADD" "3" "#OMPI_DATE#" "#PACKAGE_VERSION#" "#PACKAGE_NAME#"
.SH NAME

\fIshmem_int_add\fP(3),
\fIshmem_int4_add\fP(3),
\fIshmem_int8_add\fP(3),
\fIshmem_long_add\fP(3),
\fIshmem_longlong_add\fP(3)
\- Performs an atomic add
operation.
.SH SYNOPSIS

C or C++:
.Vb
#include <mpp/shmem.h>

void shmem_int_add(int *target, int value, int pe);
void shmem_long_add(long *target, long value, int pe);
void shmem_longlong_add(long long *target, long long value,
  int pe);
.Ve
Fortran:
.Vb
include 'mpp/shmem.h'

INTEGER pe

CALL SHMEM_INT4_ADD(target, value, pe)
CALL SHMEM_INT8_ADD(target, value, pe)
.Ve
.SH DESCRIPTION

The atomic add routines add \fBvalue\fP
to the data at address \fBtarget\fP
on PE
\fBpe\fP\&.
The operation completes without the possibility of another process updating
target between the time of the fetch and the update.
.PP
The arguments are as follows:
.TP
target
The remotely accessible integer data object to be updated on the remote PE. If
you are using C/C++, the type of target should match that implied in the SYNOPSIS section. If
you are using the Fortran compiler, it must be of type integer with an element size of 4 bytes
for SHMEM_INT4_ADD and 8 bytes for SHMEM_INT8_ADD.
.TP
value
The value to be atomically added to target. If you are using C/C++, the type of
value should match that implied in the SYNOPSIS section. If you are using Fortran, it must be
of type integer with an element size of target.
.TP
pe
An integer that indicates the PE number upon which target is to be updated. If you
are using Fortran, it must be a default integer value.
.PP
.SH NOTES

The term remotely accessible is defined in \fIintro_shmem\fP(3)\&.
.SH SEE ALSO

\fIintro_shmem\fP(3),
\fIshmem_cache\fP(3)
